Loading...
 

Liniowe funkcje bazowe

Zarówno liniowe funkcje bazowe jak i funkcje bazowe wyższego rzędu opisać można w nowoczesny sposób za pomocą konwencji przyjętej w izogeometrycznej metodzie elementów skończonych, odwołującej się do funkcji B-spline oraz notacji tak zwanego wektora węzłów (po angielsku knot-vector). Rozważmy jednowymiarowy obszar \( [0,N] \) podzielony na \( N \) przedziałów zwanych elementami skończonymi. Przyjmijmy dla uproszczenia naszej prezentacji że mamy pięć takich przedziałów, czyli \( N=5 \). Wprowadzamy notacje wektora węzłów, który stanowi sekwencję nie malejących współrzędnych punktów. Z reguły dla uproszczenia przyjmuje się punkty o współrzednych będących liczbami całkowitymi. Na przykład wektor węzłów
\( [0 \quad 0 \quad 1 \quad 2 \quad 3 \quad 4 \quad 5 \quad 5] \)
definiuje nam liniowe funkcje bazowe na przedziale \( [0,5] \) podzielonym na pięć elementów \( [0,1], [1,2], [2,3], [3,4] i [4,5] \).
W celu zilustrowania funkcji bazowych wynikających z różnych wektorów węzłów polecamy załączony kod MATLABa.
Jak interpretować zapis wektora węzłów? W pierwszej kolejności określić musimy stopień i ciągłość funkcji bazowych. Robimy to w sposób następujący. Stopień funkcji bazowych równy jest liczbie powtórzeń pierwszego (lub ostatniego) punktu w wektorze węzłów, minus jeden. Innymi słowy, patrzymy ile razy powtórzony jest pierwszy i ostatni punkt w wektorze węzłów. Jeśli punkt ten powtórzony jest dwa razy (u nas 0 0 oraz 5 5) oznacza to, że stopień funkcji bazowych wynosi jeden (dwa minus jeden), czyli wprowadzamy liniowe funkcje bazowe.
Jakie są wzory na liniowe funkcje bazowe określone za pomocą wektora węzłów. Określa to tak zwana reguła Cox-de-Boor'a, której oryginalną formułę przyczatam poniżej [1]:
\( B_{i,0}(\xi)=1 \textrm{ jeśli } \xi_i \leq \xi \leq \xi_{i+1} \textrm{ lub 0 w pozostałych przypadkach } \)
\( B_{i,p}(\xi)=\frac{\xi-\xi_i}{\xi_{i+p}-\xi_i}B_{i,p-1}(\xi)+\frac{\xi_{i+p+1}-\xi}{\xi_{i+p+1}-\xi_{i+1}}B_{i+1,p-1}(\xi) \)
Jak należy rozumieć tą regułę? Wektor \( N \) węzłów koduje nam \( N+p \) funkcji B-spline, gdzie \( p \) oznacza stopień funkcji B-spline (w naszym przypadku rozważamy liniowe funkcje B-spline, więc \( p=1 \)).
Funkcje B-spline oznaczane są \( B_{i,p} \), gdzie \( i=1,...N+p \) oznacza numer (indeks) funkcji B-spline, natomiast \( p \) oznacza stopień funkcji B-spline.


W naszym przypadku mamy \( N=5 \) oraz \( p=1 \) i nasz wektor węzłów \( [0 \quad 0 \quad 1 \quad 2 \quad 3 \quad 4 \quad \color{red}{5} \quad \color{red}{5}] \) koduje nam \( N+p=\color{red}{5}+1=6 \) funkcji bazowych B-spline, czyli funkcje
\( B_{1,1}, B_{2,1}, B_{3,1}, B_{4,1}, B_{5,1} \) oraz \( B_{6,1} \).
We wzorze Cox-de-Boora punkty \( \xi_i \) oznaczają poszczególne węzły z wektora węzłów, mamy więc \( \xi_1=0, \xi_2=1, \xi_3=2, \xi_4=3, \xi_5=4 \) oraz \( \xi_6=5 \). Musimy teraz odtworzyć ze wzoru Cox-de-Boora nasze funkcje bazowe \( B_{1,1},...,B_{6,1} \).
Wzór - jest wzorem rekurencyjnym. Musimy zacząć od zdefiniowania wszystkich funkcji B-spline zerowego rzędu na przedziale \( [0,5] \), zgodnie ze wzorem . W szczególnosci \( \xi_1=0, \xi_2=0, \xi_3=1 \) (pierwsze dwa węzły w naszym wektorze są powtórzone). Dlatego też pierwsza funkcja bazowa B-spline zerowego stopnia jest zdegenerowana do punktu
\( B_{1,0}=1 \textrm{ dla } x\in[\xi_1,\xi_2]=[0,0]=\{0\} \), 0 w pozostałych punktach,
\( B_{2,0}=1 \textrm{ dla } x\in[\xi_2,\xi_3]=[0,1] \), 0 w pozostałych punktach,
\( B_{3,0}=1 \textrm{ dla } x\in[\xi_3,\xi_4]=[1,2] \), 0 w pozostałych punktach,
\( B_{4,0}=1 \textrm{ dla } x\in[\xi_4,\xi_5]=[2,3] \), 0 w pozostałych punktach,
\( B_{5,0}=1 \textrm{ dla } x\in[\xi_5,\xi_6]=[3,4] \), 0 w pozostałych punktach,
\( B_{6,0}=1 \textrm{ dla } x\in[\xi_6,\xi_7]=[4,5] \), 0 w pozostałych punktach,
\( B_{7,0}=1 \textrm{ dla } x\in[\xi_7,\xi_8]=[5,5]=\{5\} \), 0 w pozostałych punktach.
Teraz, używając kombinacji B-spline'ów zerowego stopnia, uzyskamy B-spline'y pierwszego stopnia, zgodnie ze wzorem , dla \( p=1 \).
\( B_{i,1}(\xi)=\frac{\xi-\xi_i}{\xi_{i+1}-\xi_i}B_{i,0}(\xi)+\frac{\xi_{i+2}-\xi}{\xi_{i+2}-\xi_{i+1}}B_{i+1,0}(\xi) \)
W tym momencie zauważamy że wzór powszechnie stosowany w literaturze dotyczącej izogeometrycznej metody elementów skończonych ma pewne wady. Otóż nie wolno wstawić do niego powtarzających się węzłów, ponieważ na przykład wstawienie \( \xi_1-\xi_2=0-0=0 \) da nam dzielenie przez zero. Wzór ten należy więc obłożyć dodatkowymi warunkami, które mówią, że kolejne węzły wsadzane do mianownika muszą być różne, lub jeśli nie są różne, wówczas dany człon zamieniamy na zero. Człony te zaznaczyliśmy na czerwono:
\( B_{1,1}(\xi)=\color{red}{\frac{\xi-0}{0-0}B_{1,0}(\xi)}+\frac{1-\xi}{1-0}B_{2,0}(\xi) =1-\xi \textrm{ dla } \xi\in[0,1] \)
\( B_{2,1}(\xi)=\frac{\xi-0}{1-0}B_{2,0}(\xi)+\frac{2-\xi}{2-1}B_{3,0}(\xi) =\xi \textrm{ dla } \xi\in[0,1], 2-\xi \textrm{ dla } \xi\in[1,2] \)
\( B_{3,1}(\xi)=\frac{\xi-1}{2-1}B_{3,0}(\xi)+\frac{3-\xi}{3-2}B_{4,0}(\xi) =\xi-1 \textrm{ dla } \xi\in[1,2], 3-\xi \textrm{ dla } \xi\in[2,3] \)
\( B_{4,1}(\xi)=\frac{\xi-2}{3-2}B_{4,0}(\xi)+\frac{4-\xi}{4-3}B_{5,0}(\xi) =\xi-2 \textrm{ dla } \xi\in[2,3], 4-\xi \textrm{ dla } \xi\in[3,4] \)
\( B_{5,1}(\xi)=\frac{\xi-3}{4-3}B_{5,0}(\xi)+\frac{5-\xi}{5-4}B_{6,0}(\xi) =\xi-3 \textrm{ dla } \xi\in[3,4], 5-\xi \textrm{ dla } \xi\in[4,5] \)
\( B_{6,1}(\xi)=\frac{\xi-4}{5-4}B_{6,0}(\xi)+\color{red}{\frac{5-\xi}{5-5}B_{7,0}(\xi)}=\xi-4 \textrm{ dla } \xi\in[4,5] \)
Dla wektora węzłów
\( [0 \quad 0 \quad 1 \quad 2 \quad 3 \quad 4 \quad 5 \quad 5] \) mamy więc 6 funkcji bazowych pierwszego stopnia \( B_{1,1},...,B_{6,1} \).


Ostatnio zmieniona Sobota 09 z Lipiec, 2022 12:25:06 UTC Autor: Maciej Paszynski
Zaloguj się/Zarejestruj w OPEN AGH e-podręczniki
Czy masz już hasło?

Hasło powinno mieć przynajmniej 8 znaków, litery i cyfry oraz co najmniej jeden znak specjalny.

Przypominanie hasła

Wprowadź swój adres e-mail, abyśmy mogli przesłać Ci informację o nowym haśle.
Dziękujemy za rejestrację!
Na wskazany w rejestracji adres został wysłany e-mail z linkiem aktywacyjnym.
Wprowadzone hasło/login są błędne.